package com.capgemini.scaffold.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.capgemini.scaffold.dto.InternDTO;
import com.capgemini.scaffold.dto.TutorDTO;
import com.capgemini.scaffold.entity.Intern;
import com.capgemini.scaffold.entity.Tutor;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;

@Mapper
public interface TutorMapper extends BaseMapper<Tutor> {

    //页面展示导师数据
    List<Tutor> queryTutor();

    /**
     * 插入实习生数据
     * @param tutor 携带的数据
     * @return 返回受影响的行数
     */
    @Override
    int insert(Tutor tutor);

    /**
     * 修改导师信息
     * @param Tutor 修改的数据
     * @return 返回受影响行数
     */
    Integer updateTutor(Tutor Tutor);

    /**
     * 根据id查询导师数据
     * @param id 导师id
     * @return 查询到的数据
     */
    @Override
    Tutor selectById(Serializable id);

    //导师姓名点击，学生信息分页
    IPage<Intern> linkTutorAndIntern(Page<Intern> page, @Param("req") InternDTO req , Integer id);

    //导师页面分页查询
    IPage<Tutor> queryTutor(Page<Tutor> page, @Param("req") TutorDTO req);

    //模糊查询
    List<Tutor> linkTutor(@Param("req") TutorDTO req);

    //根据id删除导师
    @Override
    int deleteById(Serializable id);

    //修改实习生导师id为需要删除导师的Id（要求改为学员最少的导师）
    Integer updateTutorId(Integer id);

    /**
     * 待教学员模糊查询
     * @param req 输入的字符串
     * @return
     */
    List<Intern> linkIntern(@Param("req") InternDTO req,Integer id);

}
